package paquetes.servlets;

import java.io.IOException;


import java.util.ArrayList;
import java.util.List;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;



import paquetes.manager.AdministradorCliente;
import paquetes.manager.AdministradorSucursal;
import paquetes.negocioVO.*;


public class ControladorSucursal extends HttpServlet {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
	{
		String action = request.getParameter("action");
		String jspPage = "/index.jsp";

		if(request.getParameter("cancelar4")!=null)
		{
			action ="default";
		}

		if ((action == null) || (action.length() < 1))
		{
			action = "default";
		}

		if ("default".equals(action))
		{
			jspPage = "/index.jsp";

		}else if("AltaSucursal".equals(action)){

			jspPage = "jsp/Sucursal/Alta.jsp";

		}
		else if ("alta".equals(action))
		{
			String nombre = request.getParameter("nombre");
			String direccion = request.getParameter("direccion");
			int latitud = Integer.valueOf(request.getParameter("latitud"));	
			int longitud = Integer.valueOf(request.getParameter("longitud"));

			AdministradorSucursal.getInstancia().alta(nombre, direccion, latitud, longitud);
		}
		else if ("listarSucursales".equals(action))
		{
			List<SucursalVO> sucursales = new ArrayList<SucursalVO>();
			sucursales = AdministradorSucursal.getInstancia().listarSucursales();
			request.setAttribute("sucursales", sucursales);
			jspPage = "jsp/Sucursal/MostrarLista.jsp";			
		}
		else if ("AltaEmp".equals(action))
		{
			jspPage = "jsp/Empleado/Alta.jsp";	
		}
		else if ("altaEmpleado".equals(action))
		{
			String nombre = request.getParameter("nombre");
			String apellido = request.getParameter("apellido");
			int posicion = Integer.valueOf(request.getParameter("posicion"));	
			int activo = Integer.valueOf(request.getParameter("activo"));
			int suc = Integer.valueOf(request.getParameter("sucursal"));

			AdministradorSucursal.getInstancia().altaEmpleado(nombre,apellido,posicion,activo,suc);

		}
		else if ("listarEmp".equals(action))
		{
			int idSuc = Integer.valueOf(request.getParameter("id"));
			List<EmpleadoVO> empleados = new ArrayList<EmpleadoVO>();
			empleados = AdministradorSucursal.getInstancia().listarEmpleados(idSuc);
			request.setAttribute("empleados", empleados);
			jspPage = "jsp/Empleados/MostrarLista.jsp";	
		}
		else if ("displayEmpleado".equals(action))
		{
			int id = Integer.valueOf(request.getParameter("id"));
			EmpleadoVO e = AdministradorSucursal.getInstancia().obtenerEmpleado(id) ;
			request.setAttribute("empleado",e);
			jspPage = "jsp/Sucursal/Mostrar.jsp";	
		}
		else if ("listarEmpleados".equals(action))
		{
			List<SucursalVO> sucursales = new ArrayList<SucursalVO>();
			sucursales = AdministradorSucursal.getInstancia().listarSucursales();
			request.setAttribute("sucursales", sucursales);
			jspPage = "jsp/Sucursal/MostrarLista.jsp";	
		}
		else if ("AltaHojaDeRuta".equals(action))
		{
			List<SucursalVO> sucursales = new ArrayList<SucursalVO>();
			sucursales = AdministradorSucursal.getInstancia().listarSucursales();
			request.setAttribute("sucursales", sucursales);
			
			jspPage = "jsp/HojaDeRuta/Alta.jsp";	
		}
		else if ("AltaHojaDeRuta_SAVE".equals(action))
		{
			float tiempo = Float.valueOf(request.getParameter("tiempo"));
			int distancia = Integer.valueOf(request.getParameter("distancia"));
			String recorrido = request.getParameter("recorrido");	
			float costo = Float.valueOf(request.getParameter("costo"));
			int sucorigen = Integer.valueOf(request.getParameter("sucorigen"));
			int sucdestino = Integer.valueOf(request.getParameter("sucdestino"));
			
			HojaDeRutaVO hoja = new HojaDeRutaVO();
			hoja.setCosto(costo);
			hoja.setRecorrido(recorrido);
			hoja.setDistancia(distancia);
			hoja.setTiempo(tiempo);
			
			AdministradorSucursal.getInstancia().altaHojaDeRuta(hoja, sucorigen, sucdestino);
			request.setAttribute("action", "listarHojasDeRuta");
			doPost(request, response);
			return;
		}
		else if ("listarHojasDeRuta".equals(action))
		{
			int idSuc = Integer.valueOf(request.getParameter("id"));
			List<HojaDeRutaVO> hojasDeRuta = new ArrayList<HojaDeRutaVO>();
			hojasDeRuta = AdministradorSucursal.getInstancia().listarHojasDeRuta(idSuc);
			
			request.setAttribute("hojasDeRuta", hojasDeRuta);
			jspPage = "jsp/HojaDeRuta/MostrarLista.jsp";	
		}
		else if ("display".equals(action))
		{
			int id = Integer.valueOf(request.getParameter("id"));
			SucursalVO s = AdministradorSucursal.getInstancia().obtenerSucursal(id); 
			request.setAttribute("sucursal", s);
			jspPage = "jsp/Sucursal/Mostrar.jsp";
		}

		dispatch(jspPage, request, response);
	}

	protected void dispatch(String jsp, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
	{
		if (jsp != null)
		{
			RequestDispatcher rd = request.getRequestDispatcher(jsp);
			rd.forward(request, response);
		}
	}

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
	{
		System.out.println(request.toString());
		doPost(request, response);
	}
}
